SOL	:= solution			# 输出结果部分 $(SOL)
PROJ = project			# 最终报告部分 $(PROJ)
TARGET := step-3 			# 生成可执行文件的目标名称
SRCS := step-3.cc 		# .cc文件
CXX := g++				# 编译器

# 编译选项
CXXFLAGS := -rdynamic -rdynamic -fuse-ld=gold -Wl,-Bsymbolic-functions -Wl,-z,relro -pthread -pthread -ggdb

# 指定头文件目录和动态库目录
INCLUDES := -I/usr/include/deal.II/bundled \
			-I/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi \
			-I/usr/lib/x86_64-linux-gnu/openmpi/include \
			-I/usr/include/trilinos \
			-I/usr/include/hdf5/openmpi \
			-I/usr/include/scotch \
			-I/usr/include/suitesparse \
			-I/usr/include/petsc \
			-I/usr/lib/x86_64-linux-gnu/hdf5/openmpi/include \
			-I/usr/include/opencascade \
			-I/usr/include/slepc

# 链接的动态库名（如果有多个，用空格分隔）
LDLIBS := -Wl,-rpath,/usr/lib/x86_64-linux-gnu/hdf5/openmpi:/usr/lib/x86_64-linux-gnu/openmpi/lib:/usr/lib/x86_64-linux-gnu/hdf5/openmpi/lib/lib /usr/lib/x86_64-linux-gnu/libdeal.ii.g.so.9.1.1 -lboost_iostreams -lboost_serialization -lboost_system -lboost_thread -pthread -lboost_regex -lboost_chrono -lboost_date_time -lboost_atomic -ltrilinos_pike-blackbox -ltrilinos_trilinoscouplings -ltrilinos_piro -ltrilinos_rol -ltrilinos_stokhos_muelu -ltrilinos_stokhos_ifpack2 -ltrilinos_stokhos_amesos2 -ltrilinos_stokhos_tpetra -ltrilinos_stokhos_sacado -ltrilinos_stokhos -ltrilinos_rythmos -ltrilinos_shylu_ddcommon -ltrilinos_shylu_ddfrosch -ltrilinos_muelu-adapters -ltrilinos_muelu-interface -ltrilinos_muelu -ltrilinos_moertel -ltrilinos_locathyra -ltrilinos_locaepetra -ltrilinos_localapack -ltrilinos_loca -ltrilinos_noxepetra -ltrilinos_noxlapack -ltrilinos_nox -ltrilinos_phalanx -ltrilinos_intrepid2 -ltrilinos_intrepid -ltrilinos_teko -ltrilinos_stratimikos -ltrilinos_stratimikosbelos -ltrilinos_stratimikosamesos2 -ltrilinos_stratimikosaztecoo -ltrilinos_stratimikosamesos -ltrilinos_stratimikosml -ltrilinos_stratimikosifpack -ltrilinos_ifpack2-adapters -ltrilinos_ifpack2 -ltrilinos_anasazitpetra -ltrilinos_ModeLaplace -ltrilinos_anasaziepetra -ltrilinos_anasazi -ltrilinos_komplex -ltrilinos_amesos2 -ltrilinos_shylu_nodetacho -ltrilinos_shylu_nodehts -ltrilinos_belosxpetra -ltrilinos_belostpetra -ltrilinos_belosepetra -ltrilinos_belos -ltrilinos_ml -ltrilinos_ifpack -ltrilinos_zoltan2 -ltrilinos_pamgen_extras -ltrilinos_pamgen -ltrilinos_amesos -ltrilinos_galeri-xpetra -ltrilinos_galeri-epetra -ltrilinos_aztecoo -ltrilinos_dpliris -ltrilinos_isorropia -ltrilinos_optipack -ltrilinos_xpetra-sup -ltrilinos_xpetra -ltrilinos_thyratpetra -ltrilinos_thyraepetraext -ltrilinos_thyraepetra -ltrilinos_thyracore -ltrilinos_epetraext -ltrilinos_trilinosss -ltrilinos_tpetraext -ltrilinos_tpetrainout -ltrilinos_tpetra -ltrilinos_kokkostsqr -ltrilinos_tpetraclassiclinalg -ltrilinos_tpetraclassicnodeapi -ltrilinos_tpetraclassic -ltrilinos_triutils -ltrilinos_globipack -ltrilinos_shards -ltrilinos_zoltan -ltrilinos_epetra -ltrilinos_sacado -ltrilinos_rtop -ltrilinos_kokkoskernels -ltrilinos_teuchoskokkoscomm -ltrilinos_teuchoskokkoscompat -ltrilinos_teuchosremainder -ltrilinos_teuchosnumerics -ltrilinos_teuchoscomm -ltrilinos_teuchosparameterlist -ltrilinos_teuchosparser -ltrilinos_teuchoscore -ltrilinos_kokkosalgorithms -ltrilinos_kokkoscontainers -ltrilinos_kokkoscore -lsmumps -ldmumps -lcmumps -lzmumps -lpord -lmumps_common /usr/lib/x86_64-linux-gnu/hdf5/openmpi/libhdf5.so -ltbb -lz -lptscotch -lptscotcherr -lscotch -lscotcherr -ldl /usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi_cxx.so -lopen-pal -lumfpack -lcholmod -lccolamd -lcolamd -lcamd -lsuitesparseconfig -lamd -lrt -lparpack -larpack -lassimp -lgsl -lgslcblas /usr/lib/x86_64-linux-gnu/hdf5/openmpi/lib/lib/libhdf5_hl.so /usr/lib/x86_64-linux-gnu/hdf5/openmpi/lib/lib/libhdf5.so -lmuparser -lnetcdf_c++ -lnetcdf -lTKBO -lTKBool -lTKBRep -lTKernel -lTKFeat -lTKFillet -lTKG2d -lTKG3d -lTKGeomAlgo -lTKGeomBase -lTKHLR -lTKIGES -lTKMath -lTKMesh -lTKOffset -lTKPrim -lTKShHealing -lTKSTEP -lTKSTEPAttr -lTKSTEPBase -lTKSTEP209 -lTKSTL -lTKTopAlgo -lTKXSBase -lp4est -lsc -lscalapack-openmpi -llapack -lblas -lgfortran -lquadmath -lm -lc -lgcc_s -lgcc /usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi_usempif08.so /usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi_usempi_ignore_tkr.so /usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi_mpifh.so /usr/lib/x86_64-linux-gnu/openmpi/lib/libmpi.so -lslepc -lpetsc -lsundials_idas -lsundials_arkode -lsundials_kinsol -lsundials_nvecserial -lsundials_nvecparallel 


all: step-3 sol proj

# 生成可执行文件step-3
step-3:$(TARGET)			
$(TARGET): $(SRCS)
	$(CXX) $(CXXFLAGS) $(INCLUDES) -o $@ $^ $(LDFLAGS) $(LDLIBS)

# 生成输出结果solution.pdf
sol: solution.pdf				
solution.gpl: step-3
	./step-3 $(ARGS)
solution.pdf: solution.gpl solution.gp
	gnuplot solution.gp

# 生成报告project.pdf
proj:project.pdf		
project.pdf: project.pdf project.tex
	xelatex project
	xelatex project
	pdflatex project
	pdflatex project


clean:
	rm -f $(OBJS) $(TARGET) *.aux *.log *.pdf *.gpl *.toc


.PHONY: all clean
